package br.com.hs.nfe.common.to;

import br.com.hs.nfe.common.anotation.Element;
import br.com.hs.nfe.common.anotation.Node;
import br.com.hs.nfe.common.anotation.TypeEnum;
import br.com.hs.nfe.common.enumeration.ModalidadeFreteEnum;
import br.inf.portalfiscal.nfe.TNFe;

/**
 * Classe de informações do transporte da NF-e.
 * @author Ranlive Hrysyk
 */
@Node(id = "X", name = "Transporte")
public class TransporteTO extends BaseTO {

    @Element(elementName = "modFrete", publicName = "Modalidade Frete", type = TypeEnum.ENUM, classType = TNFe.InfNFe.Transp.ModFrete.Enum.class)
    private ModalidadeFreteEnum modalidadeFrete;

    /**
     * Modalidade do Frete.
     */
    public ModalidadeFreteEnum getModalidadeFrete() {
        return modalidadeFrete;
    }

    /**
     * Modalidade do Frete.
     */
    public String getModFrete() {
        if (modalidadeFrete != null) {
            return modalidadeFrete.getCodigo();
        }
        return null;
    }

    /**
     * Informar a modalidade do frete.
     * @param modalidadeFrete Modalidade do Frete
     */
    public void setModalidadeFrete(ModalidadeFreteEnum modalidadeFrete) {
        this.modalidadeFrete = modalidadeFrete;
    }

    /**
     * Informar a modalidade do frete.
     * <p>Este campo deverá ser obrigatoriamente preenchido com:
     * <br>0 - Por conta do emitente;
     * <br>1 - Por conta do destinatário/remetente;
     * <br>2 - Por conta de terceiros;
     * <br>9 - Sem Frete.
     * </p>
     * @param modalidadeFrete Modalidade do Frete
     */
    public void setModFrete(String modalidadeFrete) {
        this.modalidadeFrete = ModalidadeFreteEnum.getEnumByCodigo(modalidadeFrete);
    }
}
